﻿using System.Collections.Generic;
using Loki.Data;
using Luna.Data.Configuration;

namespace Luna.Data.CRM
{
    public interface IContactProvider : IDataProvider
    {
        #region Accounts

        void AccountDelete(IReferenceData accountID);

        void AccountDelete(IEnumerable<IAccountData> accounts);

        IAccountData AccountGet(IReferenceData accountID);

        IEnumerable<IAccountData> AccountGetAll();

        void AccountSave(IAccountData account);

        void AccountSave(IEnumerable<IAccountData> accounts);

        #endregion Accounts

        #region Category

        void CategoryDelete(IReferenceData categoryID);

        ICategoryData CategoryGet(IReferenceData categoryID);

        IEnumerable<ICategoryData> CategoryGetAll();

        void CategorySave(ICategoryData category);

        #endregion Category

        #region Contacts

        void ContactDelete(IReferenceData contact);

        void ContactDelete(IEnumerable<IContactData> contact);

        IContactData ContactGet(IReferenceData contactID);

        IEnumerable<IContactData> ContactGetAllByAccount(IReferenceData accountID);

        IEnumerable<IContactData> ContactGetAll();

        void ContactSave(IContactData contact);

        void ContactSave(IEnumerable<IContactData> contacts);

        #endregion Contacts
    }
}